<?php
/**
 * Entidad intermedia que une las paradas con los recorridos que las incluyen
 *
 * Esta entidad une Paradas y Rutas, indica además que rol tiene una parada para la ruta que la 
 * esta incluyendo. Dicho Rol puede ser origen,destino o intermedia
 *
 *
 * Desarrollado por la Escuela de Ingeniería de Antioquia
 *
 *
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       miBusWeb.Model
 * @fecha         2013-07-25
 * @fecha_mod	  2013-07-25
 * @cake		  CakePHP(tm) v 0.10.0.0
 */

App::uses('AppModel', 'Model');

class RutaParada extends AppModel {

	/**
	 * Nombre de la tabla en base de datos
	 *
	 * Tabla relacionada con el modelo en cuestión, este atributo será usado para la generación 
	 * de consultas a la base de datos
	 *
	 * @var string
	 */
	public $useTable = "rutas_paradas";
	/**
	 * Clave primaria de la base de datos
	 *
	 * clave primaria que indentifica cada registro de la tabla en cuestión
	 *
	 * @var string
	 */
	public $primaryKey = "id_rutas_paradas";
	/**
	 * Nombre del campo que se muestra cuando se hacen busquedas del modelo
	 *
	 * Nombre del campo que se muestra cuando se hacen busquedas del modelo
	 *
	 * @var string
	 */
	public $displayField = "orden_ruta";
	/**
	 * Nivel de recusividad para la busqueda de entidades relacionadas
	 *
	 * Este campo sirve para indicar si una consulta debe incluir las entidades
	 * relacionadas con el modelo en cuestión, -1 quiere decir, 0 q.. y 1 ..
	 *
	 * @var int
	 */
	public $recursive = 1;
	/**
	 * Nombre del modelo
	 *
	 * Nombre del modelo para un alias las consultas y busquedas, ingresos y 
	 * otras interacciones con la base de datos. 
	 *
	 * @var string
	 */
	public $name = "RutaParada";
	/**
	 * Orden por defecto
	 *
	 * Orden por defecto para las consultas que se realicen a la base de datos,
	 * se pueden incluir varios campos de la base de datos. Y si se especifica
	 * otro orden este no se tiene en cuenta.	 
	 *
	 * @var array(string)
	 */
	public $order = array("orden_ruta");

	
	public $belongsTo = array(
		"Ruta" => array(
				"className" => "Ruta",		
				"foreignKey" => "id_ruta",		
				"order" => array("Ruta.fecha_creacion_ruta")
		),
		"Parada" => array(
				"className" => "Parada",		
				"foreignKey" => "id_parada",		
				"order" => array("Parada.id_parada")
		),
	);

	
	/**
	*Validaciones de cada uno de los atributos del modelo
	*/
	public $validate = array(
			"id_parada" => array(
					"notEmpty" => array(
							"rule" 			=> "notEmpty",
							"allowEmpty" 	=> false,
							"required" 		=> true,
							"message" 		=> "Id de la parada no puede estar vacio",
					),
					"naturalNumber_NoZero" => array(
							"rule" 			=> array("naturalNumber", false),
							"message" 		=> "Id de la parada debe ser un número entero diferente de cero",
					),
			),
			"id_ruta" => array(
					"notEmpty" => array(
							"rule" 			=> "notEmpty",
							"allowEmpty" 	=> false,
							"required" 		=> true,
							"message" 		=> "Id de la ruta no puede estar vacio",
					),
					"naturalNumber_NoZero" => array(
							"rule" 			=> array("naturalNumber", false),
							"message" 		=> "Id de la ruta debe ser un número entero diferente de cero",
					),
			),
			"orden_ruta" => array(
					"notEmpty" => array(
							"rule" 			=> "notEmpty",
							"allowEmpty" 	=> false,
							"required" 		=> true,
							"message" 		=> "orden de la parada en esta ruta no puede estar vacio",
					),
					"naturalNumber_NoZero" => array(
							"rule" 			=> array("naturalNumber", false),
							"message" 		=> "Id de la parada debe ser un número entero diferente de cero",
					)
			),
			'tipo_parada' => array(
					'notEmpty' => array(
							'rule' => 'notEmpty',
							'message' => 'debe ingresar un tipo de parada',
							'required' => true
					),
					'inList' => array(
							'rule' => array('inList', array('origen', 'destino','intermedia')),
							'message' => 'el tipo de parada debe ser origen,destino o intermedia'
					)
			),
		);

}